<?php
  class ErrorController extends Zend_Controller_Action{
    public function errorAction(){
      $errors = $this->_getParam('error_handler');
        
      switch($errors->type){
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
        	// erro 400
        	$this->getResponse()->setHttpResponseCode(400);
          $this->view->message = 'A Página Solicitada Não Pode ser Exibida.';
        break;
          
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
        	// 501 error -- controller not found
          $this->getResponse()->setHttpResponseCode(501);
          $this->view->message = 'Página Não Existe.';
        break;
          
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
          // 404 error -- action not found
          $this->getResponse()->setHttpResponseCode(404);
          $this->view->message = 'Página Não Encontrada.';
        break;
        
        case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
        	$this->getResponse()->setHttpResponseCode(503);
          $this->view->message = 'Serviço não Disponível.';
        break;
          
        default:
          // application error
          $this->getResponse()->setHttpResponseCode(500);
              
          $this->view->message = 'Erro no Aplicativo';      
        break;
      }
      
      // Log exception, if logger available
      if($log = $this->getLog()){
      	$log->crit($this->view->message, $errors->exception);
      }
      
      // conditionally display exceptions
      if($this->getInvokeArg('displayExceptions') == true){
      	$this->view->exception = $errors->exception;
      }
      
      $this->view->request   = $errors->request;
    }

    public function getLog(){
    	$bootstrap = $this->getInvokeArg('bootstrap');
    	
    	if (!$bootstrap->hasPluginResource('Log')){
    		return false;
    	}
    	
    	$log = $bootstrap->getResource('Log');
    	
    	return $log;
    }
  }
?>